走马观花的学习下 Lua
在我们更深入地探索 ao 之前,让我们花点时间学习一下 Lua 的基础知识:你指挥 aos 进程的伙伴。
Lua 是一种简单的语言,没有什么惊喜。 如果你了解 Javascript,你会感觉它是一个简化、更纯粹的版本。 如果你从头开始学习,它看起来像是一门小型语言,专注于重要的事情:使用合理的语法进行极简的计算。
在本节中,我们将在短短几分钟内介绍 Lua 的基础知识。 如果你已经了解 Lua,请直接跳到下一章
跳回到你的 aos 进程
出于本教程的目的,我们假设你已经完成了入门 指南。 如果没有,请先完成。
如果你注销了进程,你可以随时通过在命令行上运行 aos
来重新打开它,也可以选择使用 --wallet [location]
指定你的密钥文件。
基本 Lua 表达式
在本入门书的其余部分中,我们将快速浏览 Lua 的核心功能和语法。
边推进边尝试你的 aos 进程中的示例,如果你觉得很直观明了,则可以跳过它们。
基本算术:尝试一些基本算术,例如
5 + 3
。 处理后,你将看到结果8
。+
、-
、*
、/
和^
都按你的预期工作。%
是 Lua 用于求模的符号。设置变量:输入
a = 10
并按 Enter 键。 这会将变量a
设置为 10。按照惯例(语法上不强制),全局变量在 Lua 中以大写字母开头(例如Handlers
)。使用变量:现在输入
a * 2
。 你将看到命令行上返回20
。字符串连接:通过执行
"Hello, " .. ao.id
向自己说Hello
。
尝试条件语句
If-Else:与大多数编程语言一样,Lua 使用 if-else 块来有条件地执行代码。
在你的 aos 进程中,输入
.editor
并按 Enter 键。 这将在命令行界面中打开一个内联文本编辑器。luaaos_coolness = 9001 if aos_coolness > 9000 then return "aos is coolness is over 9000!" else return "Oh. 🤷" end
在终端上完成编辑后,在新行中输入
.done
并按 Enter 键。 这将终止编辑模式并将表达式提交给你的进程进行求值。结果,你会看到
aos is coolness is over 9000!
Lua 中的
if
语句还可以有额外的elseif [condition] then
块,更便于写多级条件执行语句。
Lua 中的循环
在 Lua 中循环代码有几种不同的方法。 以下是我们的最爱:
While 循环:
首先输入
n = 0
并按 Enter 键将计数器初始化为零。然后使用
.editor
再次打开内联编辑器。luawhile n < 5 do n = n + 1 end
在新行中输入
.done
以执行 while 循环。 你只需运行n
即可检查循环结果。For 循环:
Lua 还可以在一组值之间执行 python 风格的
for
循环。 例如,使用.editor
输入以下代码块:luafor m = 1, 100 do n = n + m end
再次运行
n
来得到变量的新值。
上手函数
定义一个函数:
再次使用
.editor
,提交以下行:luafunction greeting(name) return "Hello, " .. name end
一旦提交,aos 将返回
undefined
,因为 Lua 中的函数(和变量)定义不返回值。Lua 还具有
匿名
或高阶
函数。 这些本质上允许你像使用普通数据一样使用函数本身 - 作为参数传递给其他函数等。以下示例定义了一个匿名函数,并且与上面的示例等效:luagreeting = function(name) return "Hello, " .. name end
调用函数:使用
greeting("Earthling")
调用函数。 aos 将返回"Hello, Earthling"
。
用表定义深层对象
表是Lua 唯一的复合数据结构。 它们将 键
映射到 值
,但也可以像传统数组一样使用。
- 创建一个简单的表:输入
ao_is = {"hyper", "parallel", "compute"}
来创建一个简单的表。 - 访问表的元素:使用
ao_is[2]
访问元素。 aos 将返回parallel
。 注意:Lua 中的下标是从 1 开始的! - 统计表的元素:Lua 中表的大小是通过运算符
#
读取的。 例如,运行#ao_is
将返回3
。 - 设置命名元素:输入
ao_is["cool"] = true
以向表中添加新的命名键。 命名元素也可以使用.
运算符访问,例如ao_is.cool
。
Lua 注意事项
aos 使用 Lua 是因为它是一种简单、明了的语言,大多数有经验的程序员都可以很快学会,而且由于它在 Roblox 等视频游戏中的使用,它也是一种越来越流行的首选编程语言。
尽管如此,该语言的一些问题很容易让新手 Lua 构建者犯错。 口味可能会有所不同,但以下是我们的 Lua wat 的详尽列表:
- 记住: 表索引从 1 开始,而不是 0!
- 记住:
不等于
用~=
表示,而不是!=
或类似的。 - 记住: Lua 中的对象被称为
表
,而不是它们更常见的名称。
继续前行
记住这些,你现在已经了解了使用 Lua 构建出色的去中心化进程所需的一切! 在下一章中,我们将开始使用 Lua 和 aos 构建并行进程。